import { userLogin, userInfo } from '@/api/user'
import { setToken, getToken } from '@/utils/auth'
import router, { constantRoutes } from '@/router'
export default {
  namespaced: true,
  state: {
    // token
    token: getToken(),
    // 用户信息
    getInfo: {}, // 这里有一个空对象，为了放置后面取数据报错
    routes: [constantRoutes]
  },
  mutations: {
    // 登录 获取token 存入本地存储
    loginMethods(state, payload) {
      console.log(payload)
      // 把里面的token储存到本地存储中
      setToken(payload)
      state.token = payload
    },
    // 用户信息
    getInfoMutations(state, payload) {
      state.getInfo = payload
    },
    // 动态添加路由信息
    setRoutes(state, payload) {
      console.log(payload)
      state.routes = [...constantRoutes, ...payload]
    }
  },
  actions: {
    // 在此处发送ajax请求 并且拿到token
    async loginActions(context, payload) {
      const data = await userLogin(payload)
      console.log(data)
      context.commit('loginMethods', data.data.data)
      // 添加跳转首页
      router.push('/')
    },
    // 发送获取用户信息axios请求 拿到用户信息 存入vuex
    async getInfoActions(context) {
      const data = await userInfo()
      // console.log(data)
      context.commit('getInfoMutations', data.data.data)
      return data.data.data
    },
    // 若token失效 则强制返回登录页面 并且删除token
    async removeToken(context) {
      context.commit('loginMethods', '') // 返回空的token
      context.commit('getInfoMutations', {}) // 设置用户信息为空对象
    }
  }

}
